草庐IT

shell 运算符

全部标签

c++ - c++中字符串类对象的+运算符和附加函数之间的区别?

假设我们可以添加两个字符串类对象stringstr1="hello"stringstr2="world"stringfinal=str1+str2;或stringf=str1.append(str2);这两种方法有什么区别??他们添加或实现或其他任何东西的顺序?? 最佳答案 operator+会将两个字符串相加并生成一个新的字符串。append将采用一个字符串并将其连接到字符串的末尾。#include#includeusingnamespacestd;intmain(){stringstr="Writing";stringstr2=

c++ - C/C++ 中的运算符优先级和关联性

请注意,这与OperatorPrecedence..()and++无关,Undefinedbehaviorandsequencepoints,Whyaretheseconstructs(using++)undefinedbehavior?以及这里的数百个类似问题不久:关联性是否由标准保证?详细示例:来自Wikipedia关于运算符优先级的文章,operator*和operator/具有相同的优先级,它们是从左到右运算符。这是否意味着,标准保证,即:intres=x/y*z/t;将被评估为intres=((x/y)*z)/t;或者它是实现定义的?如果有保证,你能报价吗?出于好奇,我总是在

java - 括号和逻辑运算符

考虑这段代码(C++):intx=-4,y=5;boolresult=x>0&&y++表达式(x>0)将首先被计算,并且由于(x>0=false)和短路计算,另一个表达式(y++现在考虑以下代码:intx=-4,y=5;boolresult=(x>0)&&(y++希望括号内的表达式先被求值,这样在进行逻辑与之前,表达式(y++这个案例的解释是什么?! 最佳答案 解释在问题中-短路。在C++中,计算&&(和||就此而言)保证是从左到右的,并且一旦false遇到(分别为true为||),评估保证停止。我想对于Java来说是类似的。括号是

c++ - C/C++ 中的逻辑运算符及其优先级

我最近遇到了一段代码//克服被零除的程序inta=0;intb=100;intc=a==0||b/a;printf("Hello");//输出:你好我的理论:根据优先级,运算符/的优先级高于||。所以b/a必须首先执行,我们应该得到一个运行时错误。我假设正在发生的事情是:短路运算符||,评估LHSa==0,这是真的,因此不执行b/a。我的理论错了吗?我很确定这是非常简单的事情,我现在还想不通 最佳答案 优先级并不意味着评估顺序,只是分组(括号)。在||的第一个操作数求值之后有一个序列点(旧说法),所以||的第一个操作数必须在其次,不

c++ - C++ 和重载运算符的新手,不确定如何使用该函数

嗨,我是C++的新手,我在学习了一些Java基础知识后才开始学习它。我有预先存在的代码,它已经重载了>>>运算符,但是在看了很多教程并试图理解这个问题之后,我想我会在这里问。合理的cpp文件:#include"Rational.h"#includeRational::Rational(){}Rational::Rational(intn,intd){n_=n;d_=d;}/***Createsarationalnumberequivalenttoother*/Rational::Rational(constRational&other){n_=other.n_;d_=other.d_;

c++ - 与函数一起使用时运算符 > 不匹配

我重载了以下大于操作符:booloperator>(Person&a,Person&b){//firstnameisastringdatatypereturn(a.FirstName>b.FirstName);}如果我有类似下面的东西,哪个工作正常:Persona=myPersonA;Personb=myPersonB;returnmyPersonA>myPersonB;但是,在我的Person类中,我定义了一个PersongetByID(intid)函数,它通过给定的ID返回一个Person的实例。如果我尝试将我的运算符与此函数的返回值一起使用,如下所示:boolwhosGreate

c++ - "<</>>"C++运算符

因此,由于他们以某种方式不接受搜索词“>>”,我无法在Google上找到任何内容,因此我决定在这里提问。首先,不,我不是指位移运算符。这是不同的。我已经看到它出现在一些代码中,如果它是一个移位运算符就没有意义了。cout将是一个例子。我知道它会打印出a,但是“或者在我的例子中,我有一个类似于这样的代码:for(intindex=0;index>StringArray[index];这是什么意思? 最佳答案 位移位运算符经常被重载,这意味着从流中读取值和向流中写入值。编辑:更详细地说,C++允许您重载几乎所有运算符或更改其含义。和>>

c++ - C++ 运算符重载 C++

这两个代码中哪一个是正确的,为什么?CC::operator++(){x++;y++;return*this;}C&C::operator++(){x++;y++;return*this;}谢谢 最佳答案 第二个是惯用的:无参数的operator++是前缀增量运算符,它应该返回对self的引用。 关于c++-C++运算符重载C++,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2

c++ - 在 C/C++ 中使用字符执行算术运算

此C/C++代码如何工作?我理解了其中的大部分内容,但不理解下面指定的部分:c2=(c1>='a'&&c1特别是这部分:('A'+c1-'a')这部分代码在做什么?c1和c2的类型都是char。 最佳答案 代码将小写字符转换为大写。如果字符不是小写,则返回原始字符。表达式('A'+c1-'a')进行转换。c1-a将给出字符在字母表中从0开始的位置。通过将此值添加到A,您将获得c1的大写字母。更新:如果c1是'b'那么表达式c1-'a'将给出1,这是'b'在alphabet'将'A'加1将得到'B'

c++ - 为什么使用复制构造函数而不是赋值运算符

MyClass是这样定义的:classMyClass{doublex,y;public:MyClass(doublea=0.,doubleb=0.){x=a;y=b;cout我测试了在我的主程序中调用每个构造函数或方法的时间:intmain(){cout为什么在第四个示例MyClassu=s中使用复制构造函数而不是赋值运算符?编辑包括要求的输出:MyClasspUsingthedefaultconstructorMyClassr(3.4)UsingthedefaultconstructorMyClasss(r)UsingthecopyconstructorMyClassu=sUsing